home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / gfx / edit / AmiCAD_2.07.lha / AmiCAD / ARexx / Centrer.AmiCAD < prev    next >
Text File  |  2000-11-04  |  2KB  |  102 lines

  1. /* Centrage de la référence et de la valeur d'un composant.
  2. Version 1.00: 11 août 1998
  3. Version 1.01: 13 avril 2000 (modif gestion SAVEALL, OBJECTS)
  4. Version 1.02: 16 avril 2000 (amélioration placement)
  5. Version 1.03: 4 novembre 2000 (localisation anglais/français)
  6. $VER: Centrer.AmiCAD 1.03, © R.Florac, 4 novembre 2000 */
  7.  
  8. options results
  9.  
  10. signal on error
  11. signal on syntax
  12.  
  13. 'LANGUAGE'
  14. if result='français.language' then fr=1
  15. else fr=0
  16.  
  17. nc=0; objet=1
  18. 'SAVEALL:OBJECTS'; objets=result
  19. if objets<1 then do
  20.     if fr=1 then 'MESSAGE("Il n''y a rien à faire !")'
  21.     else 'MESSAGE("Nothing to do !")'
  22.     exit
  23. end
  24.  
  25. do while objet>0
  26.     'O=FINDOBJ('objet',1,-1,-1)'; objet=result
  27.     if objet>0 then do
  28.     'TEST(O)'
  29.     if result>0 then do
  30.         nc=nc+1
  31.         call centrer(objet)
  32.     end
  33.     objet=objet+1
  34.     if objet>objets then objet=0
  35.     end
  36. end
  37.  
  38. if nc=0 then do
  39.     if fr=1 then 'MESSAGE("Sélectionnez d''abord"+CHR(10)+"le composant à arranger")'
  40.     else 'MESSAGE("Select a component"+CHR(10)+"before calling this script")'
  41.     exit
  42. end
  43.  
  44. exit
  45.  
  46. centrer: procedure
  47.     parse arg o
  48.     'GETPOS(O='o')'; p=result
  49.     'R=GETREF(O)'
  50.     ref=result
  51.     'V=GETVAL(O)'
  52.     val=result
  53.     if ref>0 then do
  54.     if val=0 then do
  55.         if p=1 | p=3 then do
  56.         'MOVE(R,0,LINE(O)-LINE(R)+(HEIGHT(O)+HEIGHT(R))/2)'
  57.         end
  58.         else do
  59.         'MOVE(R,COL(O)-COL(R)+(WIDTH(O)-WIDTH(R))/2,0)'
  60.         end
  61.     end
  62.     else do
  63.         if p=1 | p=3 then do
  64.         'MOVE(R,0,LINE(O)-LINE(R)+HEIGHT(O)/2)'
  65.         end
  66.         else do
  67.         'MOVE(R,COL(O)-COL(R)+(WIDTH(O)-WIDTH(R))/2,0)'
  68.         end
  69.     end
  70.     end
  71.     if val>0 then do
  72.     if ref=0 then do
  73.         if p=1 | p=3 then do
  74.         'MOVE(V,0,LINE(O)-LINE(V)+(HEIGHT(O)+HEIGHT(V))/2)'
  75.         end
  76.         else do
  77.         'MOVE(V,COL(O)-COL(V)+(WIDTH(O)-WIDTH(V))/2,0)'
  78.         end
  79.     end
  80.     else do
  81.         if p=1 | p=3 then do
  82.         'MOVE(V,0,LINE(O)-LINE(V)+(HEIGHT(O)+3*HEIGHT(V)/2)/2)'
  83.         end
  84.         else do
  85.         'MOVE(V,COL(O)-COL(V)+(WIDTH(O)-WIDTH(V))/2,0)'
  86.         end
  87.     end
  88.     end
  89. return
  90.  
  91. /* Traitement des erreurs, interruption du programme */
  92. syntax:
  93. erreur=RC
  94. if fr=1 then 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  95. else 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Syntax error"+CHR(10)+"in line 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  96. exit
  97.  
  98. error:
  99. if fr=1 then 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")'
  100. else 'MESSAGE("Script Centrer.AmiCAD"+CHR(10)+"Error in line 'SIGL'")'
  101. exit
  102.